package com.go.where.manager.dao;

import java.util.List;

import com.go.where.manager.page.BaseQuery;
import com.go.where.manager.page.Pagination;

/**
 * 数据库的基础操作
 * 
 * @author
 * 
 * @param <T>
 */
public interface BaseDao<T> {

	/**
	 * 通用的插入操作
	 * 
	 * @param obj
	 * @return
	 */
	public int insert(T obj);

	/**
	 * 批量新增
	 * 
	 * @param objects
	 */
	public void batchInsert(List<T> objects);

	/**
	 * 通用的更新操作
	 * 
	 * @param obj
	 * @return
	 */
	public int update(T obj);

	/**
	 * 根据主键进行删除
	 * 
	 * @param id
	 * @return
	 */
	public int deleteByKey(String id);

	/**
	 * 获取主键对应的对象信息
	 * 
	 * @param id
	 * @return
	 */
	public T getByKey(String id);

	/**
	 * 根据记录总数，分页查询相关计算
	 * 
	 * @param rowCount
	 *            符合条件的记录总数
	 * @param list
	 *            记录结果集list
	 * @param query
	 *            当前页和每页显示记录个数对象
	 * @return
	 */
	public Pagination<T> queryPagination(Integer rowCount, List<T> list,
			BaseQuery query);

	/**
	 * 查询数据库总记录数
	 * 
	 * @param
	 * @return
	 */
	public int totalCount(BaseQuery query);

	/**
	 * 获取下一个主键值
	 * 
	 * @return
	 */
	public String getNextKey();

	/**
	 * 查询记录列表
	 * 
	 * @param params
	 * @return
	 */
	public List<T> queryList(BaseQuery query);

}
